1. Field of the Invention
The present invention relates to data processing, and more particularly to a virtual memory management system and method for handling large data volumes.
2. Discussion of the Related Art
Applications for visualizing three-dimensional volume data utilize memory intensive methods such as ray-casting, splatting, and shear-warp. The volume data visualized by these methods can be obtained from medical tomographic scanners such as Magnetic Resonance (MR), Computed Tomography (CT), Positron Emission Tomography (PET), or any other apparatus capable of producing a series of slices in a grid-like array. Many volume visualization methods are implemented using a programmed computer, and rely on the computer's virtual memory and virtual paging system for storing and accessing slice data. Personal computers available today typically use operating systems such as Windows NT, Windows XP, Unix, or Linux. Such operating systems employ methods of virtual memory addressing and virtual paging. The performance of virtual memory addressing and virtual paging in a programmed computer decreases considerably when memory is allocated for a very large number of slices of a large three-dimensional volume and the total memory allocated is larger than the available Random-Access Memory (RAM) of the programmed computer, also known as physical memory. Such a decrease in the performance of virtual memory addressing and virtual paging also causes a substantial decrease in the performance of volume visualization methods.
Memory limitation have been exacerbated by recent technological advances in the field of tomographic imaging, which have improved the spatial resolution and speed of data acquisition, resulting in the production of very large datasets comprising hundreds, and even thousands of slices. For example, it is possible to rapidly generate a sequence of 1024 slices using the Siemens SOMATOM VolumeZoom™ CT scanner, with each slice comprising a grid of 512×512 picture elements, resulting in a three-dimensional volume of 512×512×1024 volume elements (over 268 million data values). In the Oil and Gas industry, seismic data measurements are also stored in very large three-dimensional volumes, with as many as 2048×2048×2048 grid elements (over 8.5 billion data values). These types of data can be larger than the Random-Access Memory (RAM) storage available on modern computers. Some three-dimensional arrays can be so large that their size exceeds the memory addressing capability of 32-bit Central Processing Units (CPU) found in many personal computers and graphic workstations, which is typically limited to a maximum of 4.2 billion data elements.
One limitation of conventional virtual paging methods available in the art is that they are designed to be general-purpose, and their performance is not optimized for handling a large number of slices of a three-dimensional volume efficiently. When the Random-Access Memory of a computer becomes overloaded with too many slice buffers, the probability that the virtual paging system will page out to disk portions of slice memory buffers that may be needed shortly thereafter by the volume visualization method increases, and can cause a continuous page-in/page-out effect that dramatically decreases the computer's processing performance. This problem is commonly known as “disk thrashing”.
For example, the Windows XP Virtual Memory Manager begins paging memory to disk only when all the physical memory is used up (i.e. when there is no more memory available). Under such low memory conditions, all applications become highly unresponsive because the operating system is busy paging memory segments in and out of disk. Since each paged segment is only 64 Kilobytes, it takes a long time to recover from low-memory conditions.
Further, the Windows XP Virtual Memory Manager has no knowledge of which image data buffers are being actively used and which are not, and therefore it tries to keep them all in memory until all the physical memory is saturated. When paging image data to disk, it has no knowledge of whether that data will be soon needed again, and therefore it can be highly inefficient.
Another limitation is in the virtual memory addressing capability of 32-bit CPUs, which address about 4.2 billion byte elements. In some virtual memory addressing systems one of the 32 address bits is reserved for kernel memory of the operating system, and therefore the remaining address space available for virtual memory allocation is reduced by half, that is about 2.1 billion byte elements. Thus, the size of the virtual memory can be exceeded: for example, a three-dimensional volume of seismic data with 2048 slice buffers each with 2048×2048 grid elements, would require over 8.5 billion byte elements of storage, exceeding the virtual memory addressing capabilities of a 32-bit CPU. If multiple large volumes need to be allocated, the limited number of virtual memory addresses for slice buffers also becomes problematic.
As shown above, applications that process large data volumes are difficult for computers to serve, due to the limited amounts of physical memory, limited virtual address space, and inefficiencies in the operating system's virtual memory management and swap file.
Therefore, a need exists for an efficient memory management method for handling large data volumes.